// var lanya = require("BLELocker.js");
var app = getApp();

const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()  

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}
var _Device = ''
var _WXWriteUUID = ''
var _WXServiceUUID = ''

var CONSTATNT_DATA = {
  VERSION: '1.8.38(11-14)',
  // BASE_URL: 'https://man.ejiakanghu.com.cn/routing_inspection_local/', //测试 todo
  // BASE_URL: 'https://man.ejiakanghu.com.cn/routing_inspection_liuqi/', //测试 todo
  // BASE_URL: 'https://man.ejiakanghu.com.cn/routing_inspection_test/',//测试 todo
//   BASE_URL: 'https://www.ejiakanghu.cn/routing_inspection/',//正式
//   BASE_URL: 'http://10.0.0.37:8089/routing_inspection/',//本地测试地址
//   UPLOAD_FILE_BASE_URL: 'https://inspection.upload.ejiakanghu.cn/routing_inspection',//测试统计
//   UPLOAD_FILE_BASE_URL: 'http://101.251.225.242:8089/routing_inspection',//测试统计
//   BASE_URL: 'http://localhost:8089/routing_inspection/',//测试统计
//   BASE_URL: 'http://localhost:8089/routing_inspection/',//测试统计
  BASE_URL: 'http://10.0.0.186:8089/routing_inspection/',//本地测试统计
//   BASE_URL: 'http://114.115.135.54:9002/routing_inspection/',//本地测试统计
//    BASE_URL: 'http://ops-sys.ejiakanghu.cn/routing_inspection/',//测试统计
  OPEN_MOCK: false,
  MOCK_URL: 'https://mockapi.eolink.com/gUVkbc96f4075bbd819b3cdb6e3de88c96059198ff20560/',//MOCK统计
  DEVICE_QRCODE_URL_PREFIX: 'http://www.ejiakanghu.com.cn/device/',
  //围老二维码地址前缀
  DEVICE_QRCODE_OLDER_URL_PREFIX: 'https://qrc.ejiakanghu.cn/qrcode/device/', 
  GATEWAY_CATEGORY_ID:{
    CATEGORY_4G: 25,
    CATEGORY_NB: 18
  }
}

var err_type = {
  // 二维码相关提示语 start
  // 编码范围 1001~1100 （一千零一至一千一百）
  qrc_err: 'T1001',//二维码内容格式错误
  qrc_null: 'T1002',//二维码为空
  qrc_cancel: 'T1003',//用户取消扫码或扫码失败
  qrc_mac_start: 'T1004',//开始用qrc获取mac
  qrc_mac_suc: 'T1005',//根据qrc获取mac请求成功
  qrc_mac_null: 'T1006',//根据qrc获取mac名称为空
  qrc_mac_rst: 'T1007',//根据qrc获取mac请求返回值非0
  qrc_mac_fail: 'T1008',//根据qrc获取mac名称请求失败
  qrc_maintain_back: 'T1009',//根据qrc获取mac显示桩维护中-归还
  qrc_maintain_rent: 'T1010',//根据qrc获取mac显示桩维护中-租借
  qrc_start_connect: 'T1011',//根据qrc获取mac成功开始连接
  qrc_net_rst_err: 'T1012', //服务校验结果为错误
  lattice_open_fail: 'T1013',//获取格子柜开锁信息失败
  lattice_open_result_err: 'T1014',//获取格子柜开锁信息失败
  lattice_open_result_no_equ: 'T1015',//直行锁无设备信息
  // 二维码相关提示语 end

  //95数据判断 start
  // 编码范围 2001~2100 （两千零一至两千一百）
  data_95_null: 'T2001',//data95为null
  data_95_repeat: 'T2002',//重复收到95数据
  data_95_send_timeout: 'T2003',//发送95超时
  data_95_motorunning: 'T2004',//租借时data95显示马达正在转动
  data_95_noeject: 'T2005',//95数据显示轮椅未弹出，连续三次
  data_95_rfid_rent: 'T2006',//租借时rfid不识。提示“请将轮椅左右摇晃并靠右摆放后点击重试。”
  data_95_rfid_rent_noInsert: 'T2007',//租借时rfid不识，且插入开关为0。提示“当前桩上可能没有轮椅，请换一个有轮椅的桩扫码租赁。”
  data_95_rfid_rent_times: 'T2008',//租借时rfid不识，连续三次。提示“请换一个设备租赁”
  data_95_rfid_back: 'T2009',//归还时rfid不识别。提示“请将轮椅靠右摆放且听到滴滴两声后再点击重试。”
  data_95_rfid_back_times: 'T2010',//归还时rfid不识别，连续三次。提示“请确认设备已经锁好且拉不下来后可联系客服帮您归还”
  data_95_phc: 'T2011',//95数据显示陪护床插入开关是0。租借时提示“该设备故障，请更换一个设备使用”；归还时提示“请检查设备是否已经锁好\n如果已锁好，请联系客服帮您归还。”
  data_95_noInsert: 'T2012',//95数据显示插入开关为0。提示“1、请检查设备是不是已经锁好\n2、如果已经锁住，请将轮椅摆正，然后往里推着轮椅点击重试。”
  data_95_noInsert_times: 'T2013',//95数据显示插入开关为0，连续三次。提示“请确认设备已经锁好且拉不下来后可联系客服帮您归还。”
  data_95_send: 'T2014',//发送95命令获取发送
  data_95_send_fail: 'T2015',//发送95命令获取发送
  data_95_no_lastest: 'T2016', //不是最新扫码的95数据

  //95数据判断 end

  // 连接状态判断 start
  // 编码范围 2101~2200 （两千一百零一至两千二百）
  connect_callback: 'T2101',//连接的回调
  openning_disconnect: 'T2102',//开锁中断开连接
  connect_timeout_back: 'T2103',//归还连接超时
  connect_timeout_back_times: 'T2104',//归还连接超时，多次
  connect_timeout_rent: 'T2105',//租借连接超时
  connect_timeout_rent_times: 'T2106',//租借连接超时，多次
  connect_fail_setting: 'T2107',//提示配置出错
  connect_fail_12: 'T2108',//蓝牙未打开
  connect_fail_13: 'T2109',//与系统服务的链接暂时丢失
  connect_fail_14: 'T21010',//未授权使用蓝牙功能
  connect_fail_15: 'T21011',//未知错误
  connect_fail_19: 'T21012',//定位未打开
  connect_fail_else: 'T2114',//其他情况
  connect_scan_fail: 'T2115',//蓝牙扫描错误
  connect_open_adpa_fail: 'T2116',//蓝牙打开适配器失败
  connect_get_devs_fail:'T2117', //蓝牙获取连接设备失败
  connect_scan_timeout:'T2118', //蓝牙扫描周围设备超时
  connect_receive_data:'T2119', //蓝牙连接上报数据
  connect_random_err:'T2120', //蓝牙连接随机数异常
  connect_data_err:'T2121', //蓝牙连接上报数据
  connect_cmd_err:'T2122', //蓝牙连接上报命令信息错误
  connect_scan_find_timeout:'T2123', //蓝牙搜索api超时
  connect_scan_find_retry:'T2124', //蓝牙搜索api超时重试

  // 85相关提示语 start
  // 编码范围 3001~3100 （三千零一至三千一百）
  data_85_send: 'T3001',//开始发送85
  data_85_retry: 'T3002',//用户点击重试租借，开始再次发送85
  data_95_85_retry: 'T3003',//用户点击重试租借，连接成功，开始再次发送85
  data_85_send_suc: 'T3004',//发送85suc
  data_85_send_fail: 'T3005',//发送85fail
  data_85_send_timeout: 'T3006',//发送85超时
  data_85_back1_timeout: 'T3007',//85回执1超时
  data_85_back1_timeout_noeject_inner: 'T3008',//85回执1超时,且满足“三分钟”等条件。显示“未弹出”弹框
  data_85_back1_timeout_noeject: 'T3009',//85回执1超时,跳转到使用中页面
  data_85_back1_timeout_else: 'T3010',//85回执1超时,提示“开锁超时,扫码归还后重试”
  data_85_back2_timeout: 'T3011',//85回执2超时
  data_85_back2_timeout_noeject_inner: 'T3012',//85回执2超时,且满足“三分钟”等条件。显示“未弹出”弹框
  data_85_back2_timeout_else: 'T3013',//85回执2超时,跳转到使用中页面
  data_85_back2_noeject_inner: 'T3014',//85回执2显示未弹出,且满足“三分钟”等条件。显示“未弹出”弹框
  data_85_back2_noeject_else: 'T3015',//85回执2显示未弹出。跳转到使用中页面
  data_85_null_inner: 'T3016',//85数据为null,且满足“三分钟”等条件。显示“未弹出”弹框
  data_85_null_else: 'T3017',//85数据为null
  data_85_timer: 'T3018',//20秒的85计时器触发，跳转到使用中页面并引导用户做归还
  data_85_suc: 'T3019',//收到85
  data_85_discon_retry: 'T3020',//发送失败蓝牙断开的，自动连接重试开锁
  data_95_85_retry_atuo: 'T3022',//自动重试连接，连接成功，开始再次发送85
  data_76_fail: 'T3023',//格子柜开锁失败
  data_76_send: 'T3024',//格子柜开锁指令发出
  data_peihuyi_token_send_suc: 'T3025',//陪护椅token命令发送成功
  data_peihuyi_token_send_fail: 'T3026',//陪护椅token命令发送失败
  data_85_send_no_dev: 'T3027', //发送88指令时 设备信息不存了
  data_send_cmd_no_dev: 'T3028', //发送指令时 设备信息不存了
  data_send_cmd_fail: 'T3029', //发送指令时失败
  data_callback_null: 'T3030', //状态回调为空
  data_callback_null_err: 'T3031', //状态回调为空错误



  // 85相关提示语 end

  // "/lease/open_lock"接口返回值的提示 start
  // 编码范围 4001~4100 （四千零一至四千一百）
  open_lock_res: 'T4001',//open_lock的结果返回
  open_lock_suc: 'T4002',//open_lock的结果返回，在success中延迟一秒上传
  open_lock_one_min: 'T4003',//连续三次一分钟租借。提示“设备网络异常，请换一台租赁”
  open_lock_2: 'T4004',//提示“您要归还的设备L"+data.leaseNoBackInfo.equId+"不在桩位"+ pile_id +"上。您可能扫错了桩位，请核对后重新扫码归还”
  open_lock_13: 'T4005',//提示“当前时间不可租借”
  open_lock_14: 'T4006',//提示“您的操作过于频繁，请稍候再试”
  open_lock_15: 'T4007',//提示“正安排更换电池,请租赁其他设备”
  open_lock_133: 'T4008',//提示“未准确插入归位桩”
  open_lock_102: 'T4009',//提示“设备维护中,请换其它桩租赁”
  open_lock_104: 'T4010',//提示“很抱歉,非法设备无法处理”
  open_lock_else: 'T4011',//提示“非法访问”
  // T4012~T4030可用
  open_lock_137_insert_rent: 'T4031',//租借时插入开关错误。提示“1、请检查设备是不是已经锁好。\n2、如果已经锁住，请将轮椅摆正，然后往里推着轮椅点击重试。”
  open_lock_137_insert_rent_times: 'T4032',//租借时插入开关错误，连续三次。提示“请换一个设备租赁”
  open_lock_137_insert_back: 'T4033',//归还时插入开关错误。提示“1、请检查设备是不是已经锁好。\n2、如果已经锁住，请将轮椅摆正，然后往里推着轮椅点击重试。”
  open_lock_137_insert_back_times: 'T4034',//归还时插入开关错误，连续三次。提示“请确认设备已经锁好且拉不下来后可联系客服帮您归还。”
  open_lock_137_hook_rent: 'T4035',//租借时锁钩开关错误。提示“请将轮椅摆正，将轮椅往里推一推，再左右摇晃轮椅。完成上述操作后点击重试。”
  open_lock_137_hook_rent_times: 'T4036',//租借时锁钩开关错误，连续三次。提示“请换一个设备租赁”
  open_lock_137_hook_back: 'T4037',//归还时插入开关错误。提示“请将轮椅摆正，将轮椅往里推一推，再左右摇晃轮椅。完成上述操作后点击重试。”
  open_lock_137_hook_back_times: 'T4038',//归还时插入开关错误，连续三次。提示“请确认设备已经锁好且拉不下来后可联系客服帮您归还。”
  open_lock_137_hook_noeject_inner: 'T4039',//归还的时候锁钩开关不对，但是满足“三分钟之内”等条件，允许用户再发送一次85，把轮椅弹出来重新归还。提示“1、如未弹出，请点击“重试租借”再租借一次，\n2、如已弹出，请点击“设备已弹出”。\n3、请慎重选择，如果不做操作，我们将默认为设备已弹出。”
  open_lock_137_hook_noeject_out: 'T4040',//归还的时候锁钩开关不对，且不满足“三分钟之内”等条件。提示“请确认设备已经锁好且拉不下来后可联系客服帮您归还”
  open_lock_137_else: 'T4041',//归还的时候开关都对但是没有滴滴两声
  open_lock_137_else_rent: 'T4042',//租借的时候开关都对但是-137
  open_lock_help_back: 'T4043',//租借的时候开关都对但是-137
  // "/lease/open_lock"接口返回值的提示 end

  //押金/免押流程的提示 start
  // 编码范围 4001~4100 （五千零一至五千一百）
  deposit_create_order: 'T5001',//用户点击租赁，生成伪订单。“开始请求租赁...”
  deposit_created_order: 'T5002',//订单生成
  deposit_created_fail: 'T5003',//订单生成fail
  deposit_to_auth: 'T5004',//“免押授权,页面跳转中...”
  deposit_query: 'T5005',//从授权页面返回。“正在查询支付/授权结果...”
  deposit_auth_success: 'T5006',//查询到授权成功，准备发送85开锁指令。“免押授权成功,准备开锁...”
  deposit_auth_fail: 'T5007',//查询到授权失败，准备弹出缴纳押金的弹框。“免押授权失败,准备支付押金...”
  deposit_pay_success: 'T5008',//支付押金接口调用成功。“押金支付成功,准备开锁...”
  deposit_pay_success_openlock: 'T5009',//支付押金成功，有连接中的设备，开始直接开锁。
  deposit_pay_success_send85: 'T5010',//支付押金成功，有连接中的设备，开始直接开锁。//和T5009意义一致
  deposit_pay_success_connect: 'T5011',//支付押金成功，没有连接中的设备，重新发起连接。
  deposit_pay_success_reconnect: 'T5012',//支付押金成功，获取连接中的设备失败，重新发起连接。
  deposit_pay_fail: 'T5013',//支付押金接口请求提示失败。“押金支付失败”
  deposit_pay_confirm: 'T5014',//用户支付押金成功。
  deposit_pay_cancel: 'T5015',//用户支付押金失败。“押金支付失败”
  deposit_pay_close: 'T5016',//用户关闭支付押金的弹框。
  deposit_to_noDepositFail: 'T5019',//用户关闭支付押金的弹框。
  //押金/免押流程的提示 end

  receive_95_time: 'T128',//接收到95的日志上报
  retry_send_95_log:'T129',//用户重试发送95的日志上报
  monitor_blue_disconnect:'T130',//监听到蓝牙断开
  pruduce_test: 'T20200401',//生产检测相关的日志
  ble_connect: 'T30000',//蓝牙连接相关的日志
  
  //60000到60500 为蓝牙错误信息标记码
  new_con:'T60000', //新的蓝牙连接起始标记
  new_con_scan_timeout:'T60100',//第一次搜索时超时5秒
  new_con_fail:'T60101',//新连接连接失败
  new_con_old:'T60102',//新连接失败，采用之前的连接重试
  new_con_blue_listen_fail:'T60103',//监听蓝牙状态失败
  new_con_blue_stat_fail:'T60104',//蓝牙适配器状态监听失败
  data_key_err:'T60105',//连接秘钥错误
  new_conf_char_fail:'T60106',//获取特征码失败
  new_conf_service_fail:'T60107',//获取服务失败  
  new_conf_adapter_none:'T60108',//蓝牙适配器打开没有反应
  new_conf_open_adapter_fail:'T60109',//蓝牙适配器打开失败
  new_conf_uuid_nofound: 'T60110',//服务的uuid没有获取到
  new_conf_95_timeout:'T60111',//95超时自动重新连接
  new_conf_95_receive_timeout: 'T60112',//95数据接收超时
  new_con_equ_timeout: 'T60113',//设备响应超时

  new_con_scan_null:'T60114',//未搜索到任何设备
  new_con_timeout:'T60115',//连接超时
  new_con_scan_second_timeout:'T60116',//第二次搜索超时8秒
  new_conf_open_adapter_fail_second:'T60117',//重试第二次蓝牙适配器打开失败
  scan_no_dev_timeout_location_fail:'T60118',//搜索不到任何设备超时,定位失败
  scan_no_dev_timeout_location_suc:'T60119',//搜索不到任何设备超时,定位成功
  send_85_discon_retry_con_send:'T60120',//发送85后蓝牙连接断开，连接成功后自动发送85

  ble_create_con_suc:'T60121',//创建蓝牙连接成功
  ble_msg_receive_flg:'T60122',//蓝牙接收消息的数据
  gateway_discon_flg:'T60123',//网关断开蓝牙

  log_click_login_btn:'T70000',//用户点击登录按钮
  pay_fail:'T80000', //支付失败


  onerror: 'T10000',//全局监控到的错误
}

// 上传图片到服务器 start
function upLoadImg(header, imgUrlArray, index, imgIdArray, callback, pictrueArr = null) {
  var i = index ? index : 0
  var imgIdArray = imgIdArray || []
  if (imgUrlArray.length > 0) {
    if (pictrueArr) {
      let imgUrl = imgUrlArray[i];
      let imgId = pictrueArr.hasOwnProperty(imgUrl) ? pictrueArr[imgUrl] : null;
      if (imgId) {
        i++
        imgIdArray.push(imgId)
        if (i == imgUrlArray.length) { //当图片传完时，停止调用
          callback(imgIdArray)
        } else { //若图片还没有传完，则继续调用函数
          upLoadImg(header, imgUrlArray, i, imgIdArray, callback,pictrueArr);
        }
      }else{
        wx.uploadFile({
          url: CONSTATNT_DATA.BASE_URL + 'file/wxUpload',
          header,
          filePath: imgUrlArray[i],
          name: 'file',
          success: function (res) {
            res = JSON.parse(res.data)
            if (res.result == 0) {
              i++
              imgIdArray.push(res.data)
              if (i == imgUrlArray.length) { //当图片传完时，停止调用
                callback(imgIdArray)
              } else { //若图片还没有传完，则继续调用函数
                upLoadImg(header, imgUrlArray, i, imgIdArray, callback,pictrueArr);
              }
            }
          },
          fail: function (err) {
            console.log("upImgFail", err);
          }
        })
      }
    } else {
      wx.uploadFile({
        url: CONSTATNT_DATA.BASE_URL + 'file/wxUpload',
        header,
        filePath: imgUrlArray[i],
        name: 'file',
        success: function (res) {
          res = JSON.parse(res.data)
          if (res.result == 0) {
            i++
            imgIdArray.push(res.data)
            if (i == imgUrlArray.length) { //当图片传完时，停止调用
              callback(imgIdArray)
            } else { //若图片还没有传完，则继续调用函数
              upLoadImg(header, imgUrlArray, i, imgIdArray, callback);
            }
          }
        },
        fail: function (err) {
          console.log("upImgFail", err);
        }
      })
    }
  } else {
    callback(imgIdArray)
  }
}
// 上传图片到服务器 end

// 新上传图片到服务器 返回值为地址数组 start
function newUpLoadImg(header, imgUrlArray, index, imgIdArray, callback, pictrueArr = null) {
    var i = index ? index : 0
    var imgIdArray = imgIdArray || []
    if (imgUrlArray.length > 0) {
      if (pictrueArr) {
        let imgUrl = imgUrlArray[i];
        let imgId = pictrueArr.hasOwnProperty(imgUrl) ? pictrueArr[imgUrl] : null;
        if (imgId) {
          i++
          imgIdArray.push(imgId)
          if (i == imgUrlArray.length) { //当图片传完时，停止调用
            callback(imgIdArray)
          } else { //若图片还没有传完，则继续调用函数
            newUpLoadImg(header, imgUrlArray, i, imgIdArray, callback,pictrueArr);
          }
        }else{
          wx.uploadFile({
            url: CONSTATNT_DATA.BASE_URL + 'file/wxUploadUrl',
            header,
            filePath: imgUrlArray[i],
            name: 'file',
            success: function (res) {
              res = JSON.parse(res.data)
              if (res.result == 0) {
                i++
                imgIdArray.push(res.data)
                if (i == imgUrlArray.length) { //当图片传完时，停止调用
                  callback(imgIdArray)
                } else { //若图片还没有传完，则继续调用函数
                    newUpLoadImg(header, imgUrlArray, i, imgIdArray, callback,pictrueArr);
                }
              }
            },
            fail: function (err) {
              console.log("upImgFail", err);
            }
          })
        }
      } else {
        wx.uploadFile({
          url: CONSTATNT_DATA.BASE_URL + 'file/wxUploadUrl',
          header,
          filePath: imgUrlArray[i],
          name: 'file',
          success: function (res) {
            res = JSON.parse(res.data)
            if (res.result == 0) {
              i++
              imgIdArray.push(res.data)
              if (i == imgUrlArray.length) { //当图片传完时，停止调用
                callback(imgIdArray)
              } else { //若图片还没有传完，则继续调用函数
                newUpLoadImg(header, imgUrlArray, i, imgIdArray, callback);
              }
            }
          },
          fail: function (err) {
            console.log("upImgFail", err);
          }
        })
      }
    } else {
      callback(imgIdArray)
    }
  }
  // 上传图片到服务器 end

/**
 * 图片预览
 */
function previewImgs(current, urls) {
  wx.previewImage({
    current: current, // 当前显示图片的http链接
    urls: urls // 需要预览的图片http链接列表
  })
}

// 会话保持
function saveToken(token, pass, ltime) {
  console.log(" now save token: " + token)
  getApp().globalData.header.token = token;
  getApp().globalData.pass = pass;
  getApp().sendLog('saveToken', JSON.stringify({
    token: token,
    pass: pass,
    ltime: ltime
  }), '');
  wx.setStorageSync("token", token) //保存token
  wx.setStorageSync("pass", pass) //保存pass
  wx.setStorageSync("ltime", ltime) //保存ltime
}

// 过期后清除token缓存
function removeLocalToken() {
  wx.removeStorageSync('token')
  console.log("remove token!")
}

//检查token是否过期的方法
function checkTokenTimeout() {
  var token = wx.getStorageSync('token')
  var ltime = wx.getStorageSync('ltime')
  console.log("开始检查token是否过期", token, ltime)
  if (token == null || token == undefined || token == "") {
    console.log("token is empty")
    return false
  }
  var aftertimestamp = Date.parse(new Date())
  if (aftertimestamp - ltime >= 1000 * 60) { //当前时间减去token时间戳大于12小时 1000*60*60*12
    removeLocalToken()
    return false
  }
  return true
}


//如果token过期，重新获取token
function checkTokenOk(header, callback, url) {
  var tokenOk = checkTokenTimeout()
  console.log("check token ok?...", tokenOk)
  if (!tokenOk) {
    // if (true) {//todo
    let pass = getApp().globalData.pass;
    if (!pass) {
      pass = wx.getStorageSync('pass');
    }
    if (pass) {
      console.log('url', url);
      changeToken(header, callback, pass, url)
    } else {
      getApp().sendLog(url ? url : '', 'token_not_ok_but_pass_is_null', 'pass:' + pass);
      wx.redirectTo({
        url: '/pages/index/index',
      })
    }
  } else {
    if (callback) {
      callback()
    }
  }
}
//定义一个方法每隔一段时间检查token是否过期 暂未启用
function checkCrossTime() {
  setTimeout(function () {
    setInterval(checkTokenOk, 5 * 60 * 60 * 1000) //这个时间可以自定义。比如5 * 60 * 60 * 1000（代表5小时）
  }, 1000 * 60 * 60 * 1)
}

function changeToken(header, callback, passArgu, url) {
  var pass = getApp().globalData.pass;
  if (passArgu) {
    pass = passArgu
  }
  if (pass) {
    wx.request({
      url: CONSTATNT_DATA.BASE_URL + 'ulogin/ctoken', //这里请求登陆验证接口0
      data: {
        pass: pass
      }, //更换使用的登录唯一票证 字符串
      header: header,
      success(res) {
        if (res.statusCode == 200 && res.data.result == 0) {
          console.log("换取token--成功-->", res)
          saveToken(res.data.data.token, res.data.data.pass, res.data.data.ltime)
          if (callback) {
            callback()
          }
        } else {
          console.log("换取token--失败-->", res)
          wx.redirectTo({
            url: '/pages/index/index',
          })
        }
      },
      fail(res) {
        console.log("换取token--fail-->", res)
        wx.redirectTo({
          url: '/pages/index/index',
        })
      },
    })
  } else {
    getApp().sendLog(url ? url : '', 'change token but pass is null', 'pass=' + pass);
    wx.redirectTo({
      url: '/pages/index/index',
    })
  }
}
// 会话保持


/**
 * 封装console.log
 */
function print(key, ...data) {
  console.log(key + '-->', data);
}
/**
 * 获取今天的日期，格式：2020-04-09
 */
function getNowDate() {
  let reg = /\//g;
  let nowTime = new Date();
  let nowDate = formatTime(nowTime).substr(0, 10).replace(reg, '-');
  return nowDate;
}

module.exports = {
  formatTime: formatTime,
  CONST_DATA: CONSTATNT_DATA,
  upLoadImg: upLoadImg,
  newUpLoadImg: newUpLoadImg,
  checkCrossTime: checkCrossTime,
  saveToken: saveToken,
  checkTokenOk: checkTokenOk,
  changeToken: changeToken,
  previewImgs: previewImgs,
  print: print,
  getNowDate: getNowDate
}
